package vis.core.service.sys;


import vis.core.domain.db.SysRole;
import vis.core.domain.search.Psh;
import com.mybatisflex.core.paginate.Page;

import java.util.Collection;
import java.util.List;

/**
 * 角色服务
 */
public interface SysRoleService {

    boolean insert(SysRole sysRole);

    boolean delete(String ids);

    boolean update(SysRole sysRole);

    Page<SysRole> pageMyRole(SysRole sysRole, Psh psh);

    SysRole info(String id);

    //更新角色菜单
    boolean updateRoleMenu(String roleId, String menuIds);

    //系统中全部角色
    List<SysRole> allMyRole();

    /**
     * 根据用户ID，返回用户具备的，全部角色Key集合
     *
     * @param userId 用户ID
     * @return List<角色KEY>
     */
    List<String> getUserRoleKeyList(Object userId);

    /**
     * 根据用户ID，返回用户具备的，全部角色ID集合
     *
     * @param userId 用户ID
     * @return List<角色ID>
     */
    Collection<String> getUserRoleIds(Object userId);

    /**
     * 清空与角色相关联的缓存
     *
     * @param roleId 角色ID
     * @return true/false
     */
    boolean removeUserRoleCache(String roleId);
}
